package ejb.session;

import ejb.*;
import java.util.Collection;
import java.util.Iterator;
import java.util.Random;
import javax.ejb.*;

public class ControleFuncionarioBean implements SessionBean {
    
  private SessionContext context;
    
    // <editor-fold defaultstate="collapsed" desc="EJB infrastructure methods. Click the + sign on the left to edit the code.">;

    // TODO Add code to acquire and use other enterprise resources (DataSource, JMS, enterprise bean, Web services)
    // TODO Add business methods or web service operations

    /**
     * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
     */
    public void setSessionContext(SessionContext aContext) {
        context = aContext;
    }
    
    /**
     * @see javax.ejb.SessionBean#ejbActivate()
     */
    public void ejbActivate() {
        
    }
    
    /**
     * @see javax.ejb.SessionBean#ejbPassivate()
     */
    public void ejbPassivate() {
        
    }
    
    /**
     * @see javax.ejb.SessionBean#ejbRemove()
     */
    public void ejbRemove() {
        
    }
    
    // </editor-fold>;

  public void ejbCreate() { }

  private FuncionarioLocal getFuncionario(String id) {
    try {
      return Util.getFuncionarioHome().findByPrimaryKey(id);
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
  }

  private CargaSemanalFuncionarioLocal findBySemana(Collection c, int semana) {
    for (Iterator it = c.iterator(); it.hasNext();) {
      CargaSemanalFuncionarioLocal csf = (CargaSemanalFuncionarioLocal)it.next();
      if (csf.getSemana() == semana)
        return csf;
    }
    return null;
  }

  public void relatarCargaCumprida(String idFuncionario, int semana, int cargaCumprida) {
    FuncionarioLocal f = getFuncionario(idFuncionario);

    CargaSemanalFuncionarioLocal csf = findBySemana(
      f.getCargaSemanalFuncionarioCollection(), semana
    );

    csf.setCargaCumprida(csf.getCargaCumprida() + cargaCumprida);
  }

  public void requisitarCargaExtra(String idFuncionario, int semana, int cargaExtra) {
    try {
      FuncionarioLocal f = getFuncionario(idFuncionario);
      RequerimentoHoraExtraLocalHome home = Util.getRequerimentoHoraExtraHome();
      RequerimentoHoraExtraLocal req = home.create(Integer.valueOf(new Random().nextInt()));

      req.setIdFuncionario(f);
      req.setSemana(semana);
      req.setQuantidadeHoras(cargaExtra);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
